home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Generate / g-tuplet < prev    next >
Lisp/Scheme  |  1998-10-09  |  4KB  |  89 lines

  1. g-tuplet seed low high type rest-position length-value tuplet-value
  2.  
  3. rest: n = non, l = last, f = first, c = center, o = outer r = random.
  4. type: d = divide r = random, m = max.
  5.  
  6. 0 in tuplet-value list is rest.
  7.  
  8. This function enables the generation of tuplet note-length values from a list of integers. In the first two examples below the tuplet-value creates tuplet groups according to the length-value value of 1/4: quintuplet, triplet, triplet, quintuplet. The choice of tuplet grouping is governed by the type, here set at random.
  9.  
  10. (g-tuplet nil 1 2 'r 'n 4 '(5 3 0 5))
  11. => ((3/20 1/10) (1/12 1/12 1/12) (-1/4) (1/5 1/20))
  12.  
  13. (g-tuplet nil 1 2 'r 'n '1/4 '(5 3 3 5))
  14. => ((3/20 1/10) (1/12 1/6) (1/12 1/6) (1/5 1/20))
  15.  
  16. (g-tuplet nil 1 2 'r 'c '1/4 '(5 7 4 5))
  17. => ((1/20 -1/20 1/20 1/10) (1/14 -1/14 1/28 1/28 1/28)
  18.     (1/16 -1/8 1/16) (1/10 -1/20 1/10))
  19.  
  20. (g-tuplet nil 1 2 'r 'o 4 '(5 7 4 5))
  21. => ((-1/20 1/20 1/20 -1/10) (-1/14 1/14 1/28 1/28 -1/28)
  22.     (-1/16 1/8 -1/16) (-1/10 1/20 -1/10))
  23.  
  24. (g-tuplet nil 1 2 'r 'r 4 '(5 3 3 5))
  25. => ((-3/20 1/10) (-1/12 1/6) (-1/12 1/6) (1/5 -1/20))
  26.  
  27. (g-tuplet nil 1 2 'r 'f 4 '(5 3 3 5))
  28. => ((-1/20 1/10 1/20 1/20) (-1/6 1/12) (-1/6 1/12) (-1/10 1/20 1/10))
  29.  
  30. (g-tuplet nil 1 2 'r 'l 4 '(5 3 3 5))
  31. => ((1/20 1/10 1/20 -1/20) (1/6 -1/12) (1/6 -1/12) (1/10 1/20 -1/10))
  32.  
  33. (g-tuplet nil 1 5 'r 'n 4 '(5 3 3 5))
  34. => ((1/20 1/5) (1/12 1/6) (1/4) (1/5 1/20))
  35.  
  36. In the next example the type is set to 'm', thus requesting the generation of tuplets to their maximum numerical grouping. 
  37.  
  38. (g-tuplet nil 1 5 'm 'n 4 '(5 3 3 5))
  39. => ((1/20 1/20 1/20 1/20 1/20) (1/12 1/12 1/12)
  40.     (1/12 1/12 1/12) (1/20 1/20 1/20 1/20 1/20))
  41.  
  42. When set to 'd' the type divides up the tuplet values into additive groupings, thus (1/12 1/12 1/12) might become (1/12 1/6) or (1/6 1/12) and so on.
  43.  
  44. (g-tuplet nil 1 2 'd 'r 4 '(5 3 3 5))
  45. => ((1/20 -1/10 1/10) (1/6 -1/12) (1/6 -1/12) (1/20 -1/20 1/10 1/20))
  46.  
  47. (g-tuplet .23 1 3 'r 'f 4 '(5 3 4 5))
  48. => ((-3/20 1/10) (-1/12 1/6) (-1/8 1/8) (-1/5 1/20))
  49.  
  50. (g-tuplet .23 1 3 'd 'n '(4 8 8) '(5 3 4 5))
  51. => ((1/10 1/20 1/10) (1/24 1/12) (1/16 1/16) (1/20 3/20 1/20))
  52.  
  53. (g-tuplet nil 2 3 'd 'l '(4 8 8) '(5 3 4 5))
  54. => ((1/10 -3/20) (1/12 -1/24) (1/16 -1/16) (3/20 -1/10))
  55.  
  56. (g-tuplet .56 1 2 'd 'r '(4 8 8) '(5 3 0 5))
  57. => ((-1/20 1/10 1/10) (1/12 -1/24) (-1/8) (1/10 -1/20 1/10))
  58.  
  59. (g-tuplet 0.23 1 5 '(d r)
  60.           (flatten (rotate-fc 7 '(f f c r n n c c o)))
  61.           (flatten (rotate-fc 7 '(4 4 8 8)))
  62.           (flatten (rotate-fc 7 '(3 5 5 0 4 5 5 3))))
  63.  
  64. (g-tuplet nil 1 3 'd
  65.           '(f n l n l n n r n n f n n f n f f)                                                                                                           
  66.           '(4 4 4 8 8 4 4 4 4 4 4 8 8 4 4 4 4)
  67.           '(5 1 8 4 0 3 0 5 1 1 5 4 4 3 3 5 5))
  68.  
  69. => ((-1/20 1/20 1/10 1/20) (1/4) (1/16 1/16 1/16 -1/16)
  70.     (3/32 1/32) (-1/8) (1/12 1/6) (-1/4) (1/20 -1/10 1/10)
  71.     (1/4) (1/4) (-1/20 1/20 3/20) (1/32 3/32) (1/16 1/16)
  72.     (-1/6 1/12) (1/6 1/12) (-3/20 1/20 1/20) (-1/20 3/20 1/20))
  73.  
  74. (g-tuplet nil 1 3
  75.           '(d r r d m r m d d d m r m d r r d)
  76.           '(f n c n l n n r n n f o n f n f f)                                                                                                           
  77.           '(4 4 4 (8 8) 4 4 4 4 4 4 (8 8) 4 4 4 4)
  78.           '(5 1 8 4 3 4 0 5 5 3 5 4 4 0 3 5 5))
  79.  
  80. (setq l-d '((d d d d d) (d d d) d d (d d d) (d d d d) (d d d d d) d (d d d d d d)))
  81. (setq l-r '((n n n n n) (f n n) n n (n l n) (f n n n) (n n n f n) f (f n n n n l)))
  82. (setq l-l '((4 8 8 4 4) (4 4 4) 4 4 (4 8 8) (4 4 4 4) (8 8 4 4 4) 4 (4 4 4 4 8 8)))
  83. (setq l-t '((1 1 4 1 3) (2 3 1) 1 0 (3 2 0) (3 3 1 3) (0 4 4 4 5) 3 (2 3 3 3 3 3)))
  84.  
  85. (g-tuplet .08764 1 2
  86.           (cfunction (gen-noise-white 100 1.0 (1~ seed)) l-d)
  87.           (cfunction (gen-noise-white 100 1.0 (1~ seed)) l-r)
  88.           (cfunction (gen-noise-white 100 1.0 (1~ seed)) l-l)
  89.           (cfunction (gen-noise-white 100 1.0 (1~ seed)) l-t))